package jgl.vajra.kingkong.part.home.contract;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import jgl.vajra.kingkong.bean.CityChoiceBean;
import jgl.vajra.kingkong.bean.HomeCarModelBean;
import jgl.vajra.kingkong.bean.HomeMechanicsBean;
import jgl.vajra.kingkong.bean.MarketPriceBean;
import jgl.vajra.kingkong.bean.OpenCityBean;
import jgl.vajra.kingkong.bean.SpeechInfoBean;
import jgl.vajra.kingkong.databinding.FragmentHomePageBinding;
import jgl.vajra.kingkong.widget.mvvm.model.BaseModel;
import jgl.vajra.kingkong.widget.mvvm.view.BaseMVVMView;
import jgl.vajra.kingkong.widget.mvvm.viewmodel.BaseViewModel;

public class HomePageContract {
    public abstract static class Model extends BaseModel {

        public abstract Observable<SpeechInfoBean> getSpeechInfoData(Map<String, Object> map);

        public abstract Observable<List<HomeMechanicsBean>> getCarTypeData(Map<String, Object> map);

        public abstract Observable<List<HomeCarModelBean>> getCarModelData(Map<String, Object> mapCarModel);

        public abstract Observable<MarketPriceBean> getMarketPriceData(Map<String, Object> map);

        public abstract Observable<List<CityChoiceBean>> getAreaInfoData(Map<String, Object> map);

        public abstract Observable<OpenCityBean> getOpenCityData(Map<String, Object> map);
    }

    public interface View extends BaseMVVMView {

        void onTriangle();

        void onGiftBox();

        void onReconnect();


        void onAllMachinery();

        void onAllVehicle();

        void onShiftAccounting();

        void onMileageAccounting();

        void onWorkingField(int type);

        void onCommonAddress(int type);

        void onAddCargoPlace();

        void onAddDischargePlace();

        void onSettleAccounts();

        void onOrderNotCompleted();

        void onImmediatelyCar();

        void onMarketPrice();

        void onReservedCar();

        void onCalculateAccounts();

        void onChooseOwnBid();

        void onOwnBid();

        void onDeletePlace(int position);

        void onClickMechanics(int position, HomeMechanicsBean itemData);

        void returnHomeMechanicsBean(List<HomeMechanicsBean> homeMechanicsBean);

        void returnHomeCarModelBean(List<HomeCarModelBean> data);

        void returnSpeechInfoBean(SpeechInfoBean data);

        void returnMarketPriceData(MarketPriceBean data);

        void returnAreaInfoBean(List<CityChoiceBean> cityChoiceBean);

        void returnOpenCityData(OpenCityBean openCityBean);
    }

    public abstract static class ViewModel extends BaseViewModel<View, FragmentHomePageBinding, Model> {

        public abstract void getSpeechInfoData(Map<String, Object> map);

        public abstract void getCarTypeData(Map<String, Object> map);

        public abstract void getCarModelData(Map<String, Object> mapCarModel);

        public abstract void getMarketPriceData(Map<String, Object> map);

        public abstract void getAreaInfoData(Map<String, Object> map);

        public abstract void getOpenCityData(Map<String, Object> map);
    }
}
